Object variables are a fancy term for "This variable's name starts with X."
You can manually create "object variables" by adding variables to your initial_settings line like this:

initial_settings:{"a.var1":0, "a.var2":0, "a.var3":0}

And you'll have an object variable "a" with 3 attributes (sub-variables), "var1", "var2" and "var3".
Great! So what are they useful for?

DialogueActions uses object variables for advanced variable manipulation.
You can greatly simplify complex dialogues with object variables.

An example.

You're writing some overly complex dialogue in which you can train slaves and equip them with (parts of) various outfits.
Now, this would require you to keep track of over a hundred variables normally... about 10 or more per outfit, 10 outfits...

It's a total mess.

You don't want to write tons and tons of lines for putting all the clothes on (or loading them from char codes for that matter!)

So what do you do?

You use object variables.

[COPYOBJECT_1_Outfit1._da.clothes.]

With one trigger, you can copy all her clothes to an object...
and you can load it back in later.

...

Huh, but it copies everything. And you want the piercings and such to be compatible... oh, you mean outfits only consist of bra (top), panties, shirt (tops), pants, socks (legwear, legwearB) and shoes (footwear)?

No problem.

First, define an object for what an outfit "is".

[DEFINEOBJECT_OutfitInfo._top_tops_panties_bottoms_legwear_legwearB_footwear]

Then... copy using the object!

[COPYOBJECT_1_Outfit1._da.clothes._USING_OutfitInfo.]

But there's even more powerful things you can do with this...

Imagine you had a shop where you can buy outfits. You have to display them on some sort of mannequin.

You're not gonna weave the shop through your main dialogue file... that'd be a nightmare to manage.
So you create a separate store dialogue file.

Aww crap, how are you going to move 100+ variables?

Well, what if we defined the Outfits into one big object?

Change
[COPYOBJECT_1_Outfit1._da.clothes._USING_OutfitInfo.]
into
[COPYOBJECT_1_Outfits.Outfit1._da.clothes._USING_OutfitInfo.]

Then...

[REGISTERGLOBALS_Outfits.]

And voila! Everything in Outfits. is in the global namespace!